<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
	</body>
	<script type="text/javascript">
		var   arr=[1,1,3,4,3,4,234,124,45,578,234,45,111,578];
		
//		1:
		Array.prototype.unique1=function () {
			var n=[];//n临时数组  存放去重的数据的数组
			//遍历数组
			for (var i = 0; i < this.length; i++) {
				//如果当前数组的第i个元素是否已经保存到临时数组  是的话跳过   否  push进去
				
				if (n.indexOf(this[i])==-1) {
					n.push(this[i]);
				}
			}
			return n;
		}
		
		//第二种方法
		Array.prototype.unique2=function () {
			var n=[this[0]];//结果数组
			
			for (var i = 1; i < this.length; i++) {
				//如果当前数组的第i项在当前数组中第一次出现的位置不是i；
				//那么表示第i 项是重复的  过滤掉  否则 存入结果数组
				if (this.indexOf(this[i])==i) {
					n.push(this[i]);
				}
				
			}
			return n;
		}
			
			
		//第三种方法
		Array.prototype.unique3=function () {
			var n={},r=[];//n为临时表，r为临时数组；
			//遍历当前数组
			for (var i = 0; i < this.length; i++) {
				if (!n[this[i]]) {//如果临时表中没有当前项
					n[this[i]]=true;//存入临时表
					r.push(this[i]);//把当前数组的当前项push到临时数组里
				}
			}
			return r;
		}
		
		
		
		console.log(arr.unique3())
	</script>
</html>
